//
//  label.h
//  LTLBMC
//
//  Created by GD Huang on 5/17/12.
//  Copyright (c) 2012 __MyCompanyName__. All rights reserved.
//

#ifndef LTLBMC_label_h
#define LTLBMC_label_h

#include "location.h"
#include "exp.h"
#include "astVisitor.h"

namespace cilast {

    class exp;
    
    class label : public OCamlObject {
    public:
        virtual int accept(astVisitor*);
    };
    
    class Label : public label {
    public:    
        char* mstr;
        location* mlocation;
        bool mbool;
        
        int accept(astVisitor*);
        
    };
    
    class Case : public label {
    public:    
        exp* mexp;
        location* mlocation;
        
        int accept(astVisitor*);
    };
    
    class Default : public label {
    public:    
        location* mlocation;
        
        int accept(astVisitor*);
    };
    
}

#endif
